﻿@namespace AntDesign
@inherits Input<string>

@{
    Dictionary<string, object> attributes =
        new Dictionary<string, object>()
                                        {
            //{ "onchange", EventUtil.AsNonRenderingEventHandler<ChangeEventArgs>(e => OnChangeAsync(e)) },
            //{ "onblur", EventUtil.AsNonRenderingEventHandler<FocusEventArgs>(e => OnBlurAsync(e)) },
            //{ "oninput", EventUtil.AsNonRenderingEventHandler<ChangeEventArgs>(e => OnInputAsync(e)) },
            //{ "onkeypress", EventUtil.AsNonRenderingEventHandler<KeyboardEventArgs>(e => OnKeyPressAsync(e)) },
            //{ "onkeyup", EventUtil.AsNonRenderingEventHandler<KeyboardEventArgs>(e => OnKeyUpAsync(e)) },
            //{ "onkeydown", EventUtil.AsNonRenderingEventHandler<KeyboardEventArgs>(e => OnkeyDownAsync(e)) },
            //{ "onfocus", EventUtil.AsNonRenderingEventHandler<FocusEventArgs>(e => OnFocusAsync(e)) },
            { "onchange", CallbackFactory.Create(this, OnChangeAsync) },
            { "onblur", CallbackFactory.Create(this, OnBlurAsync) },
            { "oninput", CallbackFactory.Create(this, OnInputAsync) },
            { "onkeypress", CallbackFactory.Create(this, OnKeyPressAsync) },
            { "onkeyup", CallbackFactory.Create(this, OnKeyUpAsync) },
            { "onkeydown", CallbackFactory.Create(this, OnkeyDownAsync) },
            { "onfocus", CallbackFactory.Create(this, OnFocusAsync) },
            { "value", CurrentValueAsString },
            { "placeholder", Placeholder },
            { "id", Id },
            //{ "style", Style },
            //{ "class", ClassMapper.Class },
            { "disabled", Disabled },
            { "readonly", ReadOnly },
    };

    if (AutoSize == false)
    {
        attributes.Add("style", _heightStyle + Style);
        attributes.Add("rows", Rows);
    }

    if (Attributes != null)
    {
        Attributes.Keys.ForEach(key => { attributes[key] = Attributes[key]; });
    }

    if (!string.IsNullOrEmpty(NameAttributeValue))
    {
        attributes.Add("name", NameAttributeValue);
    }
}

@if (Suffix != null || AllowClear || FormItem?.FeedbackIcon != null || ShowCount)
{
    <div class="@ClassMapper.Class" style="@Style" data-count="@Count">
        <span class="@_warpperClassMapper.Class">
            <textarea @ref="Ref" class="@_textareaClassMapper.Class" @attributes="attributes" @onchange:stopPropagation="@StopPropagation" @onblur:stopPropagation="@StopPropagation" />
            @if (AllowClear)
            {
                @ClearIcon
            }
        </span>
        <span class="ant-input-textarea-suffix">
            @if (Suffix != null)
            {
                @Suffix
            }
            @if (FormItem?.FeedbackIcon != null)
            {
                @FormItem.FeedbackIcon
            }
        </span>
    </div>
}
else
{
    <textarea @ref="Ref" class="@ClassMapper.OriginalClass @_textareaClassMapper.Class" @attributes="attributes" @onchange:stopPropagation="@StopPropagation" @onblur:stopPropagation="@StopPropagation" />
}
